package com.meimeixia.pattern.singleton.demo1;

/**
 * 单例模式
 * 饿汉式：静态成员变量
 * @author: t-zhijiang.zhao
 * @date: 2024/10/8 下午2:44
 */
public class Singleton {
    /*
      1.私有构造方法：为什么要私有构造方法呢？因为私有了构造方法之后，外界就访问不到这个构造方法了，访问不到的话外界就无法去创建对象了
      2.在本类中创建一个本类对象供外界去使用
      3.提供一个公共的访问方式，让外界获取该对象
     */

    /**
     * 1.私有化构造方法
     */
    private Singleton() {
    }

    /**
     * 2.在本类中创建本类对象
     */
    private static Singleton instance = new Singleton();

    /**
     * 3.提供一个公共的访问方式，让外界获取该对象
     * @return
     */
    public static Singleton getInstance() {
        return instance;
    }

    /*
      注意，以上该类中对外提供的公共访问方法，除了使用public修饰之外，还使用了static修饰，这是为什么呢？因为外界无法创建Singleton类的对象，
      既然不能创建对象的话，那么就无法去调用其非静态方法了，所以这里面我们对外要提供的是静态方法。而且，由于静态的不能直接访问非静态的，
      所以instance成员变量还得使用static来修饰。
     */
}
